home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 19
/
CD_ASCQ_19_010295.iso
/
dos
/
prg
/
pas
/
swag
/
strings.swg
/
0075_Dec to Hex and Back.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-02-15
|
1KB
|
50 lines
{ Here is another set of routines to convert Decimal to Hex and vice versa}
CONST
HexString : array [0..15] of char = '0123456789ABCDEF';
FUNCTION Dec2Hex (Num : word) : string;
{ Returns decimal value as hex string }
VAR
Loop : Byte;
S : string [10];
BEGIN
S := ''; { empty string }
for Loop := 1 to 4 do begin { do 4 chars }
S := HexString [Lo (Num) and $F] + S; { use 4 lowest bits }
Num := Num shr 4; { shift bits right 4 }
end;
Dec2Hex := '$' + S; { return string }
END;
FUNCTION Hex2Dec (S : string) : longint;
{ returns hexadecimal string as decimal value }
VAR
Len : byte absolute S;
Loop : byte;
Li : longint;
Num : longint;
BEGIN
if S [1] = '$' then delete (S, 1, 1);
if upcase (S [Len]) = 'H' then dec (S [0]);
Num := 0;
for Loop := 1 to Len do begin
Li := 0;
while
(HexString [Li] <> S [Loop]) { compare letter }
and
(Li < 16)
do
inc (Li); { inc counter }
if Li = 16 then begin
Num := -1; { -1 if invalid }
exit;
end;
Num := Num + Li shl ((Len - Loop) * 4); { add to Num }
end;
Hex2Dec := Num; { return value }
END;